ABC268 C - Chinese Restaurant
https://atcoder.jp/contests/abc268/tasks/abc268_c
提出
code: python
n = int(input())
p = list(map(int, input().split()))
ans = -1
for i in range(n):
tmp = 0
food = p.index(i)
if food == i or food == (i+1)%n or food == (i-1)%n:
tmp += 1
if tmp > ans:
ans = tmp
print(ans)
解答
code: python
n = int(input())
p = list(map(int, input().split()))
# ci := food は i 回まわしたら良い
c = 0 for _ in range(n)
for man, food in enumerate(p):
move = (food - man) % n
c(move - 1) % n += 1
cmove += 1
c(move + 1) % n += 1
print(max(c))
メモ
数学超苦手な文系エンジニアがAtCoder Beginner Contest 268に参加してみました
https://www.youtube.com/watch?v=BYoRvdgI5EU&t=1388s
提出
code: python
n = int(input())
p = list(map(int, input().split()))
# mod = (i-1 % n, i, i+1 % n) for i in p
# print(mod)
# p = 3, 1, 2, 0
# mod = (abs(i-1) % n, i, i+1 % n) for i in p
# print(mod)
p = 3, 1, 2, 0
for idx, v in enumerate(p):
man = idx
food = p.index(idx)
print(man, food)
# mod を算出